import SmartCache from '../../helpers/smart_cache';
import { cacheDependencyManager } from './cache_dependency_manager';

/**
 * 缓存初始化器
 * 初始化所有缓存并注册到依赖管理器
 */
class CacheInitializer {
  constructor() {
    this._initialized = false;
    this._cacheConfig = {
      // 项目缓存，5分钟
      project: {
        ttl: 5 * 60 * 1000
      },
      
      // 任务缓存，5分钟
      task: {
        ttl: 5 * 60 * 1000
      },
      
      // 文档缓存，10分钟
      document: {
        ttl: 10 * 60 * 1000
      },
      
      // 团队缓存，10分钟
      team: {
        ttl: 10 * 60 * 1000
      }
    };
  }
  
  /**
   * 初始化所有缓存
   */
  initialize() {
    if (this._initialized) return;
    
    // 创建缓存实例
    Object.keys(this._cacheConfig).forEach(namespace => {
      const config = this._cacheConfig[namespace];
      const cache = new SmartCache(namespace, config.ttl);
      
      // 注册到依赖管理器
      cacheDependencyManager.registerCache(namespace, cache);
    });
    
    this._initialized = true;
    
    console.log('[CacheInitializer] 缓存初始化完成');
  }
  
  /**
   * 获取指定命名空间的缓存实例
   * @param {String} namespace 缓存命名空间
   */
  getCache(namespace) {
    if (!this._initialized) {
      this.initialize();
    }
    
    return cacheDependencyManager.getCache(namespace);
  }
  
  /**
   * 清除所有缓存
   */
  clearAllCache() {
    if (!this._initialized) return;
    
    cacheDependencyManager.clearAllCache();
    console.log('[CacheInitializer] 清除所有缓存完成');
  }
}

// 创建单例
export const cacheInitializer = new CacheInitializer();

// 自动初始化
cacheInitializer.initialize(); 